package com.example.bober.badugi_server;

import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Message;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;


public class MyActivity extends Activity {


    private static int numerPortu = 1793;// z domyslna wartoscia
    private static String adresIP = "192.168.0.1";
    static Socket gniazdo;
    static ObjectOutputStream strumienWyjsciowy;
    static ObjectInputStream strumienWejsciowy;
    private boolean sprawdz = false;
    private Thread t1;

    public void ok(View view){
        
        Thread t2 = new Thread(new Runnable() {
            @Override
            public void run() {
                try {

                    // Send a message to the client application
                    // OutputStream abstrakcyjną klasą obsługującą strumień wyjściowy
                    EditText editText = (EditText) findViewById(R.id.edit_text);
                    strumienWyjsciowy.writeObject(editText.getText().toString());

                    // Read and display the response message sent by server application
                    // abstrakcyjną klasą obsługującą strumień wejściowy
                    String message = String.valueOf(strumienWejsciowy.readObject());
                    System.out.println("Message: " + message);
                    if (message.equals("Zagrakło miejsca, spróbuj jeszcze raz")) {
                        Intent intent = new Intent(getApplication(), MyActivity.class);
                        startActivity(intent);
                    }
                    else {
                        char t[] = message.toCharArray();
                        int id = 0;
                        if (t[message.length()-1] == '0')
                            id = 0;
                        if (t[message.length()-1] == '1')
                            id = 1;
                        if (t[message.length()-1] == '2')
                            id = 2;
                        if (t[message.length()-1] == '3')
                            id = 3;
                        if (t[message.length()-1] == '4')
                            id = 4;
                        if (t[message.length()-1] == '5')
                            id = 5;
                        Intent intent = new Intent(getApplication(), Gra.class);
                        intent.putExtra("ID", id);
                        intent.putExtra("name", editText.getText().toString());
                        startActivity(intent);
                    }
                    //wyswietlacz.setText(message);

                    /*********** wyjątek nieznanego hosta **********/
                }
                catch (NullPointerException e){
                    //Toast.makeText(getApplication(), "Nie udalo się połączyć z serwerem", Toast.LENGTH_SHORT).show();
                }
                catch (UnknownHostException e) {// w przypadku braku identyfikacji
                    // komputera o podanej nazwie lub
                    // adresie, wyjatek do metody
                    // getLocalHost()
                    //Toast.makeText(getApplication(), "Nie udalo się połączyć z serwerem", Toast.LENGTH_SHORT).show();
                    e.printStackTrace();// Jeżeli nazwa hosta jest nieznana lub serwer
                    // nazw nie działa
                    /*********** wyjątek wejścia-wyjścia *********/
                } catch (IOException e) {
                    //Toast.makeText(getApplication(), "Nie udalo się połączyć z serwerem", Toast.LENGTH_SHORT).show();
                    e.printStackTrace();
                } catch (ClassNotFoundException e) {
                    //Toast.makeText(getApplication(), "Nie udalo się połączyć z serwerem", Toast.LENGTH_SHORT).show();
                    e.printStackTrace();
                }
            }
        });
        t2.start();

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);

        t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    gniazdo = new Socket(adresIP, numerPortu);
                    strumienWyjsciowy = new ObjectOutputStream(gniazdo.getOutputStream());
                    strumienWejsciowy = new ObjectInputStream(gniazdo.getInputStream());

                } catch (UnknownHostException e) {

                } catch (IOException e) {

                }
            }
        });
        t1.start();

    }



}
